<?php
/*
 * [JINYUN!] (C)2001-2099 Jinyunweb.com
 * This is NOT a freeware, use is subject to license terms
 * $Id: 2017-12-13 03:39:35 apple $
*/
defined('BY_JYA') or exit('error');
$_RQ['op']=$_RQ['op']?$_RQ['op']:'get';
$return=array();

if($_RQ['op']=='get'){
	$return['item']=core_setting('system');
	$register=uni_setting('register');
	$return['item']['dxmb']=$register['dxmb'];
	$return['item']['template_mg']=$return['item']['template_mg']?:'default';
	$return['ip']=CLIENT_IP;
	$intypes=get_plugin_intypes();
	$inlist=array();
	foreach($intypes as $k=>$inv){
		$inlist[]=array('id'=>$k,'title'=>$inv,'otitle'=>$inv,'noshow'=>0);
	}
	$return['item']['intypes']=count($return['item']['intypes'])>0?$return['item']['intypes']:$inlist;
	$tpltypes=get_template_groups();
	$template_groups=array();
	foreach($tpltypes as $k=>$inv){
		$template_groups[]=array('id'=>$k,'title'=>$inv,'otitle'=>$inv,'noshow'=>0);
	}
	$return['item']['template_groups']=count($return['item']['template_groups'])>0?$return['item']['template_groups']:$template_groups;
	$htmls=array(
		'type'=>'edit',
		'post'=>'post',
		'desc'=>'设置系统信息',
		'edit_tab'=>true,
		'edits'=>array(
			array('title'=>'基础设置','list'=>array(
				array('type'=>'switch','title'=>'关闭站点','name'=>'close','help'=>''),
				array('type'=>'text','title'=>'关闭原因','name'=>'close_reason','help'=>'','show'=>array('close',1)),
				array('type'=>'switch','title'=>'是否显示首页','name'=>'home','help'=>''),
				array('type'=>'switch','title'=>'是否关闭APP相关','name'=>'no_app','help'=>'关闭后，APP相关菜单将不显示！'),
				array('type'=>'switch','title'=>'是否应用接管','name'=>'istakeover','help'=>'应用接管后，后台界面，前台界面都显示应用的！'),
				array('type'=>'select','title'=>'接管的应用','name'=>'takeoverplugin','options'=>'plugins','option_value'=>'name','help'=>'选择接管的应用！','show'=>array('istakeover'=>1)),
				array('type'=>'switch','title'=>'是否校验会话ID','name'=>'check_ssid','help'=>'开启后可防止会话ID被伪造。注意，第一次开启此项功能将会导致当前所有会话失效，需要重新获得会话并登陆，可能会影响客户使用。因此如需开启，请尽量在网站流量少的时候开启！开启后新的会话恢复正常。'),
				array('type'=>'switch','title'=>'开启站点访问频率限制','name'=>'account_limit','help'=>'开启后，可以在站点套餐中设置套餐站点访问频率，防止单个站点占用过多系统资源！'),
				array('type'=>'switch','title'=>'是否强制绑定独立域名','name'=>'diy_domain','help'=>'开启后，用户必须使用自己的域名解析到服务器IP，用户所属所有网站页面将只能使用用户自己的域名进行访问'),
				array('type'=>'string','title'=>'指定解析地址','name'=>'ip','help'=>'设置解析服务器IP，系统将会提示用户将自己的域名解析到该地址上'),
				array('type'=>'string','title'=>'指定系统主域名','name'=>'domain','help'=>'此处指定系统主域名，可防止客户将该域名绑定为自己的个性域名导致出错。非常重要！'),
				array('type'=>'switch','title'=>'是否分配独立域名','name'=>'user_domain','help'=>'开启后，每个用户在配置自己个性域名前，可以使用系统分配的独立域名来访问自己的站点。如果关闭，则用户在配置自己的个性域名前，全部使用系统主域名访问自己的站点。'),
				array('type'=>'string','title'=>'泛解析域名','name'=>'domain_pre','show'=>array('user_domain',1),'help'=>'开启分配独立域名，必须配置泛解析域名。例如“*.web.baidu.com”。'),
				array('type'=>'string','title'=>'会话过期时间（秒）','name'=>'session_expire','help'=>'会话过期时间，注意不要设置过短，否则系统会频繁提示会话过期并要求重新进入！'),
				array('type'=>'switch','title'=>'开启防cc攻击','name'=>'dcc','help'=>'开启后，系统将开启智能抗cc攻击机制。'),
				array('type'=>'string','title'=>'IPsession个数','name'=>'ip_num','help'=>'设置同一个IP最多允许产生几个session会话。'),
				array('type'=>'string','title'=>'session访问频率','name'=>'session_num','help'=>'设置每个session每秒最多发起多少次请求。例如设置为5，则每个会话（即用户）每秒最多发起5个请求，超出则不予处理。'),
				array('type'=>'switch','title'=>'是否开启页面缓存','name'=>'cache_html','help'=>'开启后，将缓存html、js文件，减少服务器开销。（可在系统设置——更新缓存中强制更新）如果在调试代码，可能会导致页面样式和js不会及时更新。'),
				array('type'=>'switch','title'=>'是否使用百度静态资源库','name'=>'use_baidu','help'=>'开启后，系统将会从百度静态资源库加载基本js，从而加快网站访问速度，减少服务器开销。关闭时，系统将会从本地加载相应js。<red>注意：如果你的服务器限制了加载外部JS，可能会影响正常使用！</red>'),
				array('type'=>'switch','title'=>'是否关闭单页式访问','name'=>'close_one_page','help'=>'<red>非特殊要求，不明白的情况下不要操作！</red>系统页面访问模式默认为单页式，即除第一次访问系统外，后续访问系统其他页面均通过ajax方式实现无刷新访问，此种情况下系统会自动将当前页面的地址信息保存到地址栏的#后面。如果关闭单页式访问，后续访问系统页面将会通过刷新实现对新页面的访问。相比普通的刷新式访问，单页式访问可大幅降低服务器开销（在访问系统多个页面的情况下），但是系统会将页面地址信息显示在地址栏#后面，不利于URL自定义！'),
				array('type'=>'string','title'=>'sql异常记录','name'=>'maxtimesql','help'=>'设置sql最大执行时间，超出该时间系统会自动记录sql执行信息以备查看。（单位：秒）'),
				array('type'=>'switch','title'=>'开启调试模式','name'=>'development','help'=>'本设置开启调试模式后，勿必设置调试ip白名单，否则本设置无效！如果设置《core/config.php》开启的话，则不受白名单限制！'),
				array('type'=>'string','title'=>'调试白名单','name'=>'develop_ip','help'=>'设置调试ip白名单。其作用为，调试模式仅对白名单下的ip有效。其他访客即使系统开启调试模式也不会显示语法错误。方便客户日常运维调试，防止敏感信息泄露。<br>如未设置调试白名单，则开启调试模式后，所有用户访问均显示语法错误（如果有的话）。<br>当前访问ip为：{{pagedata.ip}}。如需进入调试模式，请将本ip填入输入框保存，然后进入站点根目录修改站点配置文件（core/config.php）将development一项设置为1。'),
				array('type'=>'switch','title'=>'是否开启更新忽略机制','name'=>'open_ignore','help'=>'为防止部分客户错误操作导致系统出现问题，本功能默认关闭。开启后，将可以通过设置忽略来使自己的自定义修改不被系统更新覆盖！'),
				array('type'=>'switch','title'=>'是否开启错误日志自动上报','name'=>'up_error','help'=>'开启后，系统错误日志检测到错误后将会直接上报至云平台，方便云平台技术处理优化。'),
				array('type'=>'switch','title'=>'是否关闭菜单更新','name'=>'noup_menus','help'=>'关闭后，系统菜单不再更新！不被覆盖！'),
			)),
			array('title'=>'登陆设置','list'=>array(
				array('type'=>'switch','title'=>'开启手机验证码登陆','name'=>'mobile_code','help'=>'开启后，用户将可以通过输入手机号和验证码来登陆、注册'),
				array('type'=>'copy','title'=>'验证码短信模版ID','name'=>'dxmb','show'=>array('mobile_code'=>1),'help'=>'此处短信模版ID，统一移步：系统短信设置--验证码短信模版ID，来设置'),
				array('type'=>'switch','title'=>'开启登陆验证码','name'=>'verify_code','help'=>''),
				array('type'=>'switch','title'=>'开启微信一键登陆','name'=>'wechat_scan_login','help'=>'开启后用户可以通过微信扫码登陆后台。本功能需要主站点添加绑定认证服务号'),
				array('type'=>'switch','title'=>'开启微信第三方登陆','name'=>'wechat_login','help'=>'开启后用户可以通过微信登陆后台，本功能需要设置下面两项参数（<red>如果未设置，将使用系统默认的微信开放平台参数！</red>）;如果没有微信第三方开放平台，您也可以通过添加一个微信认证公众号（移步：<red>站点平台--公众号--添加公众号</red>），来实现微信一键登录系统平台！'),
				array('type'=>'string','title'=>'微信开放平台网站应用appid','name'=>'wechat_login_appid','help'=>'前往微信开放平台注册并创建网站应用，获取应用appid。注意创建应用时，设置好域名授权！','show'=>array('wechat_login'=>1)),
				array('type'=>'string','title'=>'微信开放平台网站应用appsecret','name'=>'wechat_login_appsecret','help'=>'前往微信开放平台注册并创建网站应用，获取应用密钥','show'=>array('wechat_login'=>1)),
				array('type'=>'switch','title'=>'开启QQ登陆登陆','name'=>'qq_login','help'=>'开启后用户可以通过QQ登陆后台'),
				array('type'=>'string','title'=>'QQ互联应用appid','name'=>'qq_login_appid','help'=>'前往QQ互联注册并创建应用，获取应用appid。注意创建应用时，设置好域名授权！','show'=>array('qq_login'=>1)),
				array('type'=>'string','title'=>'QQ互联应用appsecret','name'=>'qq_login_appsecret','help'=>'前往QQ互联注册并创建应用，获取应用密钥','show'=>array('qq_login'=>1)),
				array('type'=>'switch','title'=>'开启单会话机制','name'=>'login_one','help'=>'开启后，一个账号同时只能有一个有效会话。例如，如果A已用admin账号登陆，则B再用admin账号登陆时，将会把A挤出，使A的回话无效'),
				array('type'=>'switch','title'=>'禁止套餐过期用户登陆','name'=>'forbid','help'=>'如果禁止。当用户账户过期时，将禁止用户登陆和使用系统。如果选择允许，则当用户账户过期时，仅用户所属套餐功能不能再使用，基础免费功能和额外购买的功能仍可使用，而且可以正常登陆。'),
			)),
			array('title'=>'开放平台设置','list'=>array(
				array('type'=>'href','title'=>'开启微信第三方平台','url'=>'core/system.open/','btntitle'=>'前往设置','help'=>'移步系统设置-微信开放平台'),
				array('type'=>'switch','title'=>'开启企业微信第三方平台','name'=>'wxworkapi_open','help'=>'建议设置成功后再开启，开启后，表示第三方参数可用，用于客户授权登录企业微信，同步企业微信市场等！'),
				array('type'=>'string','title'=>'企业微信服务商应用corpid','name'=>'wxwork_corpid','help'=>'（获取方法为：登录服务商管理后台->服务商信息->标准应用能力->通用开发参数，可以看到）！https://open.work.weixin.qq.com/'),
				array('type'=>'string','title'=>'企业微信服务商应用provider_secret','name'=>'wxwork_provider_secret','help'=>'（获取方法为：登录服务商管理后台->服务商信息->标准应用能力->通用开发参数，可以看到）！https://open.work.weixin.qq.com/'),
				
				array('type'=>'string','title'=>'QQ互联应用appid','name'=>'qq_login_appid','help'=>'前往QQ互联注册并创建应用，获取应用appid。注意创建应用时，设置好域名授权！https://connect.qq.com/'),
				array('type'=>'string','title'=>'QQ互联应用appsecret','name'=>'qq_login_appsecret','help'=>'前往QQ互联注册并创建应用，获取应用密钥！https://connect.qq.com/'),
			)),
			array('title'=>'模版界面设置','list'=>array(
				array('type'=>'select','title'=>'选择后台界面模版','name'=>'template_mg','help'=>'','options'=>'template_mg','option_value'=>'name'),
				array('type'=>'select','title'=>'选择系统风格模版','name'=>'template_name','help'=>'','options'=>'templates','option_value'=>'name','help'=>'来自：云服务--系统风格模版。应用市场分类：《平台模板》'),
			)),
			array(
			'title'=>'行业分类设置',
			'list'=>array(
						array(
							'type'=>'array_simple',
							'name'=>'intypes',
							'noadd'=>true,
								'fields'=>array(
										array('type'=>'string','name'=>'title','title'=>'分类名称'),
										array('type'=>'switch','name'=>'noshow','title'=>'关闭？'),									
								),
						),
			)),
			array(
			'title'=>'模板分类设置',
			'list'=>array(
						array(
							'type'=>'array_simple',
							'name'=>'template_groups',
							'noadd'=>true,
								'fields'=>array(
										array('type'=>'string','name'=>'title','title'=>'分类名称'),
										array('type'=>'switch','name'=>'noshow','title'=>'关闭？'),									
								),
						),
			)),
			array('title'=>'其他接口设置','list'=>array(
				array('type'=>'string','title'=>'百度地图AK','name'=>'baidu_ak','help'=>'填写百度地图接口ak以调用百度地图接口'),
			)),
		),
	);
	$return['plugins']=pdo_getall('core_plugins',array('istakeover'=>1),array('name','title'));
	$templates=pdo_getall('core_manage_template',array(),array('name','title'));
	array_unshift($templates,array('name'=>'default','title'=>'默认模版'));
	$return['template_mg']=array(
		array('name'=>'default','title'=>'默认横向模版'),
		array('name'=>'oldmoban','title'=>'原经典纵向模版')
	);
	$return['templates']=$templates;
	$return['htmls']=$htmls;
	exi($return);
}
if($_RQ['op']=='post'){
	$postdata=get_postdata();
	//校验数据
	if(!$postdata['domain']){
		//必须指定系统主域名，如果用户未指定。系统自动抓取当前域名作为主域名 
		$postdata['domain']=$_SERVER['HTTP_HOST'];
	}else{
		$preg = "/^http(s)?:\\/\\/.+/";
		if(preg_match($preg,$postdata['domain'])){
			exi('域名不能带有http://或https://。','error');	
		}
		if(!preg_match('/^(\w+[\.]+\w+)+$/',$postdata['domain'])){
			//exi('该域名不合法。','error');	
		}
	}
	if($postdata['user_domain'] && !$postdata['domain_pre']){
		//开启分配独立域名，必须配置泛解析域名。
		exi('您启用了分配独立域名功能，请设置泛解析域名！','error');
	}
	if($postdata['close'] && !$postdata['close_reason']){
		//关闭站点，必须填写关闭原因。
		exi('您准备关闭站点，请设置站点关闭原因！','error');
	}
	if(!$postdata['session_expire'] || intval($postdata['session_expire'])<100){
		//会话过期时间最小设置10秒
		$postdata['session_expire']=100;
	}
	if(intval($postdata['session_expire'])>36000){
		exi('会话过期时间不能大于36000（10小时）.','error');
	}
	core_setting('system',$postdata);
	exi('系统设置，设置成功！');
}